home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Bavarian
/
Bavarian #088 (19xx)(APS Electronic).zip
/
Bavarian #088 (19xx)(APS Electronic).adf
/
screenprint
(
.txt
)
< prev
Wrap
AmigaBASIC Source Code
|
1986-12-20
|
3KB
|
107 lines
MainLoop:
k$ = INKEY$
IF k$ = "z" THEN
GOSUB DrawLines:
ELSEIF k$ = "d" THEN
BorderFlag% = 0
GOSUB ScreenDump
FOR de = 1 TO 5000: NEXT
END IF
GOTO MainLoop:
ScreenDump:
IF AlreadyDeclared = 0 THEN
DECLARE FUNCTION AllocSignal%() LIBRARY
DECLARE FUNCTION AllocMem&() LIBRARY
DECLARE FUNCTION FindTask&() LIBRARY
DECLARE FUNCTION DoIO&() LIBRARY
DECLARE FUNCTION OpenDevice& LIBRARY
AlreadyDeclared = 1
END IF
sWindow& = WINDOW(7)
sScreen& = PEEKL(sWindow& + 46)
sViewPort& = sScreen& + 44
sRastPort& = sScreen& + 84
sColorMap& = PEEKL(sViewPort& + 4)
maxWidth% = PEEKW(sScreen& + 12)
maxHeight% = PEEKW(sScreen& + 14)
viewModes% = PEEKW(sViewPort& + 32)
command% = 11
srcX% = 0
srcY% = 0
srcWidth% = maxWidth%
srcHeight% = maxHeight%
destRows& = 0
destCols& = 0
special% = &H84
IF BorderFlag% = 0 THEN
srcX% = srcX% + 3
srcY% = srcY% + 11
srcWidth% = srcWidth% - 3 - 11
srcHeight% = srcHeight% - 11 - 3
END IF
LIBRARY "exec.library"
sigBit% = AllocSignal%(-1)
ClearPublic& = 65537
msgPort& = AllocMem&(40,ClearPublic&)
IF msgPort& = 0 THEN
PRINT "msgPort nicht allokierbar."
GOTO cleanup4
END IF
POKE(msgPort& + 8), 4 'Type=NT_MSGPORT
POKE(msgPort& + 9), 0 'Priority 0
portName$ = "MyPrtPort"+CHR$(0)
POKEL(msgPort& + 10), SADD(portName$)
POKE(msgPort& + 14), 0 'Flags
POKE(msgPort& + 15), sigBit%
sigTask& = FindTask&(0)
POKEL(msgPort& + 16), sigTask&
CALL AddPort(msgPort&) 'Port hinzufuegen
ioRequest& = AllocMem&(64,ClearPublic&)
IF ioRequest& = 0 THEN
PRINT "ioRequest nicht allokierbar."
GOTO cleanup3
END IF
POKE(ioRequest& + 8),5 'Type=NT_MESSAGE
POKE(ioRequest& + 9),0 'Priority 0
POKEL(ioRequest& + 14), msgPort&
devName$ = "printer.device"+CHR$(0)
pError& = OpenDevice&(SADD(devName$),0,ioRequest&,0)
IF pError& <> 0 THEN
PRINT "Drucker nicht ansprechbar."
GOTO cleanup2
END IF
POKEW(ioRequest& + 28), command%
POKEL(ioRequest& + 32), sRastPort&
POKEL(ioRequest& + 36), sColorMap&
POKEL(ioRequest& + 40), viewModes%
POKEW(ioRequest& + 44), srcX%
POKEW(ioRequest& + 46), srcY%
POKEW(ioRequest& + 48), srcWidth%
POKEW(ioRequest& + 50), srcHeight%
POKEL(ioRequest& + 52), destCols&
POKEL(ioRequest& + 56), destRows&
POKEW(ioRequest& + 60), special%
ioError& = DoIO&(ioRequest&)
IF ioError& <> 0 THEN
PRINT "DumpRPort Fehler =" ioError&
GOTO cleanup1
END IF
cleanup1:
CALL CloseDevice(ioRequest&)
cleanup2:
POKE(ioRequest& + 8), &Hff
POKEL(ioRequest& + 20), -1
POKEL(ioRequest& + 24), -1
CALL FreeMem(ioRequest&,64)
cleanup3:
CALL RemPort(msgPort&)
POKE(msgPort& + 8), &Hff
POKEL(msgPort& + 20), -1
CALL FreeSignal(sigBit%)
CALL FreeMem(msgPort&,40)
cleanup4:
LIBRARY CLOSE
RETURN